"""
7.士兵进行设计训练，统计在1分钟内的开枪次数，总成绩（每一次射击的成绩在8-10环之间）
  （1）枪的弹夹容量为10，子弹打完后需要3秒换弹夹
  （2）每次射击后需要随机调整1-3秒才能开下一枪
"""
import random
import time

class Gun:
    """枪"""
    def __init__(self, name, bullet=10):
        """
        :param name: 枪的名字
        :param bullet: 弹夹装弹量
        """
        self.name = name
        self.bullet = bullet
    def shoot(self):
        """射击"""
        if self.bullet > 0:
            self.bullet -= 1
    def add(self):
        """换弹夹"""
        self.bullet = 10


class Soldier:
    def __init__(self, name, gun):
        """
        :param name: 士兵名字
        :param gun: 枪
        """
        self.name = name
        self.count = 0 # 射击次数
        self.scores = []  # 成绩列表
        self.gun = gun

    def shooting(self, shoot_time=60):
        """
        :param shoot_time: 射击持续时间秒
        """
        start_time=time.time() #记录开始时间
        while time.time()-start_time<=shoot_time:
            self.gun.shoot()
            self.count += 1
            current_score = random.randint(8, 10)  # 随机出一个8-10的成绩
            self.scores.append(current_score) # 添加成绩到成绩列表
            print(f"第 {self.count} 次 射击的成绩是：{current_score},剩余子弹数：{self.gun.bullet}",)
            if self.gun.bullet > 0:  # 有弹的情况
                time.sleep(random.randint(1, 3))  # 花费1-3秒时间进行下一次射击
            else: # 弹夹空了
                self.gun.add()
                time.sleep(3)  # 换弹夹花费3秒
                print("----换了弹夹---")

    def show_result(self):
        print(f"士兵【{self.name}】射击次数是【 {self.count} 】,成绩是【 {self.scores} 】,总分是【 {sum(self.scores)} 】  ")
if __name__ == '__main__':
    gun=Gun("AK47")
    s1=Soldier("吴京",gun)
    s1.shooting()
    s1.show_result()
